package com.dmw.demo.utils;

import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;
import java.util.concurrent.TimeUnit;

@Slf4j
@Component
public class CacheClient<T> {

    @Resource
    private RedisTemplate redisTemplate;

    // 将任意 Java 对象序列化为 JSON 并存储在 String 类型的 key 中，并可以设置 TTL 过期时间
    public void setAll(String key, List<T> value, Long time, TimeUnit unit) {
        redisTemplate.opsForList().rightPushAll(key, value);
        redisTemplate.expire(key, time, unit);
    }

    // 从 start 到 end 中，将存储为 String 类型的 key 的值拿出来，并转成 Java 对象
    public List<T> getRange(String key, long start, long end){
        List<T> result = redisTemplate.opsForList().range(key, start, end);
        return result;
    }

    // 获取存储的 key 的个数
    public Long size(String key){
        Long size = redisTemplate.opsForList().size(key);
        return size;
    }

}
